package com.xyy.saas.payment.payment.core.dto;

import com.xyy.saas.payment.cores.enums.BusinessIdTypeEnum;
import lombok.Data;

import java.util.Date;

@Data
public class RefundDto {
    /**
     * 支付渠道
     */
    private String channel;
    /**
     * 第三方支付单号
     */
    private String channelChargeId;
    /**
     * 订单号
     */
    private String payNo;
    /**
     * 退款单号
     */
    private String refundNo;
    /**
     * 总金额
     */
    private Integer totalAmount;
    /**
     * 退款金额
     */
    private Integer amount;
    /**
     * 业务退款单号
     */
    private String businessRefundNo;
    /**
     * 描述
     */
    private String description;
    /**
     * 回调地址
     */
    private String callbackUrl;
    /**
     * 佣金
     */
    private Integer commission;
    /**
     * 业务类型
     */
    private String businessType;
    /**
     * 业务订单类型
     */
    private String businessOrderType;
    /**
     * 用户id
     */
    private String userId;
    /**
     * 商户号
     */
    private String merchantId;
    /**
     * 渠道订单号
     */
    private String channelPayNo;
    /**
     * 付款人
     */
    private String payer;
    /**
     * 第三方交易单号 （退款发起后返回）
     */
    private String channelTransactionNo;
    /**
     * 第三方交易单号 （支付发起后返回）
     */
    private String origChannelTransactionNo;
    /**
     * 退款重试次数
     */
    private int count;

    /**
     * 第三方交易的日期 即原订单日期
     */
    private Date oriTransDate;

    /**
     * 订单日期
     */
    private Date transDate;

    /**
     * 付款方式
     */
    private String payMode;

    /**
     * 收款人id
     */
    private String receiverId;

    /**
     * 业务支付单号
     */
    private String businessOrderNo;

    /**
     * 是否按业务线路由
     */
    private Boolean businessIdTypeRoute = Boolean.FALSE;
    /**
     * 是否需要换商户订单号
     */
    private Boolean needChangeRefundNo = Boolean.FALSE;
    /**
     * 商户订单号
     */
    private String channelRefundNo;
    /**
     * 预支付订单的扩展信息
     */
    private String extra;

    /**
     * 退款类型 1:部分退款 2:全部退款
     */
    private Integer refundType;

    public boolean isPop() {
        if (BusinessIdTypeEnum.EC_POP.getType().equals(businessOrderType)) {
            return true;
        }
        return false;
    }
}
